<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
</head>
<body>
    <script >
      // 声明一个数组
      const xiyou = ['唐僧','孙悟空','猪八戒','沙悟净'];

      for(let v of xiyou){
        console.log(v);
      }
      // 传统的 in 方法，会打印出数组的索引，而不是值。
      // 我们可以手动获得这个迭代器
      let iterator = xiyou[Symbol.iterator]();
      
      // 调用对象的next 方法
      // 可以拿到下一个元素，知道完成所有的遍历
      console.log(iterator.next());
      console.log(iterator.next());
      console.log(iterator.next());
      console.log(iterator.next());
      console.log(iterator.next());


      // 练习
      const banji = {
        name:"班级",
        stus:[
          'pop',
          'pipi'
        ],
        [Symbol.iterator](){
          let index = 0;
          let that = this;
          return {
            next:function(){
              if(index < 2){
                const result = {value:that.stus[index],done:false};
                index++;
                return result;
              }else{
                return {value:undefined,done:true}
              }
            }
          }
        }
      }

      // 希望遍历，获得数组里面的成员
      for(let x of banji){
        console.log(x);
      }
   </script>
</body>

</html>